package com.ruoyi.system.mapper;


import com.ruoyi.system.domain.ArchiveUtilizationStats;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 档案利用统计 Mapper 接口
 * 提供数据库操作方法，包括增删改查、批量保存
 *
 * @author [你的名字或团队名]
 */
@Mapper
public interface ArchiveUtilizationStatsMapper {
    /**
     * 查询档案利用统计列表，可根据名称模糊查询
     *
     * @param stats 查询条件封装
     * @return 档案利用统计信息列表
     */
    List<ArchiveUtilizationStats> selectArchiveUtilizationStatsList(ArchiveUtilizationStats stats);

    /**
     * 根据主键ID查询档案利用统计详情
     *
     * @param id 主键ID
     * @return 档案利用统计信息
     */
    ArchiveUtilizationStats selectArchiveUtilizationStatsById(Long id);

    /**
     * 新增档案利用统计记录
     *
     * @param stats 要新增的数据
     * @return 影响行数，1 表示成功
     */
    int insertArchiveUtilizationStats(ArchiveUtilizationStats stats);

    /**
     * 修改档案利用统计记录
     *
     * @param stats 要修改的数据（需包含ID）
     * @return 影响行数，1 表示成功
     */
    int updateArchiveUtilizationStats(ArchiveUtilizationStats stats);

    /**
     * 根据主键ID删除单条档案利用统计记录
     *
     * @param id 主键ID
     * @return 影响行数，1 表示成功
     */
    int deleteArchiveUtilizationStatsById(Long id);

    /**
     * 批量删除档案利用统计记录
     *
     * @param ids 要删除的主键ID数组
     * @return 影响行数，等于成功删除的记录数
     */
    int deleteArchiveUtilizationStatsByIds(Long[] ids);

    /**
     * 批量插入档案利用统计数据（用于批量保存，先删后插场景）
     *
     * @param list 要插入的数据列表
     * @return 影响行数，等于成功插入的记录数
     */
    int batchInsertArchiveUtilizationStats(@Param("list") List<ArchiveUtilizationStats> list);

    /**
     * 删除所有档案利用统计数据（用于批量保存前清空表）
     *
     * @return 影响行数，等于成功删除的记录数
     */
    int deleteAllArchiveUtilizationStats();
}